#ifndef IGENERAL_HPP
#define IGENERAL_HPP

#include "location.hpp"
#include "bitmap.hpp"
#include "iarmy.hpp"

struct igeneral
{
  virtual ~igeneral() {}
  
  virtual const std::vector<location>& foodlist() const = 0;
  virtual const std::vector<item>& antlist() const = 0;
  virtual const std::vector<item>& myantlist() const = 0;
  virtual const std::vector<item>& enemyantlist() const = 0;
  virtual const std::vector<item>& hilllist() const = 0;
  
  virtual const bitmap& food() const = 0;
  virtual const bitmap& myants() const = 0;
  virtual const bitmap& enemyants() const = 0;
  
  virtual const bitmap& myhills() const = 0;
  virtual const bitmap& enemyhills() const = 0;
  
  virtual const bitmap& ivisible() const = 0;
  virtual const bitmap& istudy() const = 0;
  virtual const bitmap& water() const = 0;
  // w = 0, 1, 2
  virtual const bitmap& enemyattack(int w = 0) const = 0;
  
  virtual double viewradius() const = 0;
  virtual double attackradius() const = 0;
  virtual int turn() const = 0;
  
  virtual std::vector<advice>& forces() = 0;
  
  virtual location area() const = 0; 
  
};

#endif